package cn.vconinfo.base.oss;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.GetObjectRequest;
import com.aliyun.oss.model.OSSObject;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URL;
import java.util.Date;

@Component
@Data
public class AliOSSUtils {
    private static final Logger businessLogger = LoggerFactory.getLogger("business_log");
    
    @Value("${aliyun.oss.endpoint:oss-cn-hangzhou.aliyuncs.com}")
    private String endpoint;
    
    @Value("${aliyun.oss.accessKeyId:LTAI4GATtVXmYuVd7t8q1QYD}")
    private String accessKeyId;
    
    @Value("${aliyun.oss.accessKeySecret:nKXmN6nInFbHopmOtMbJ9R5IWqAjDx}")
    private String accessKeySecret;
    
    @Value("${aliyun.oss.bucketName:ubbio}")
    private String bucketName;
    
    @Value("${aliyun.oss.url:http://ubbio.oss-cn-hangzhou.aliyuncs.com}")
    private String accessUrl;
    
    /**
     * IO流读取图片 根据文件id
     *
     * @author xty
     * @date 2019/5/16 15:51
     */
//    @RequestMapping(value = "/get_img_file/{file_id}", method = RequestMethod.GET,
//        produces = MediaType.IMAGE_JPEG_VALUE)
//    public BufferedImage ioReadImageByFileId(@PathVariable(name = "file_id") Long fileId,
//        HttpServletRequest httpServletRequest, HttpServletResponse response) throws IOException {
//        FileInputStream fs = ioReadImageStreamFileId(fileId, httpServletRequest, response, 0);
//        if (fs == null) {
//            BufferedImage bufferedImage = new BufferedImage(1, 1, BufferedImage.TYPE_INT_RGB);
//            Graphics2D g = (Graphics2D)bufferedImage.createGraphics();
//            g.setColor(Color.WHITE);
//            g.fillRect(0, 0, 1, 1);
//            g.dispose();
//            return bufferedImage;
//        }
//        return ImageIO.read(fs);
//    }
    
    /**
     * @param response
     * @param fileUrl
     * @param flag
     *            0buffer方法调用 1base64方法调用
     * @return
     * @throws IOException
     */
    public FileInputStream ioReadImageStreamFileId(HttpServletResponse response, String fileUrl, int flag) throws IOException {

        if (StringUtils.isBlank(fileUrl)) {
            return null;
        }

        downloadLocalFile(endpoint, accessKeyId, accessKeySecret, bucketName, fileUrl);

        if (flag == 0) {
            String fileTye = fileUrl.substring(fileUrl.lastIndexOf("."));
            response.setHeader("Content-Type", ContentTypeUtil.getSingleton().getContentTypeByExpansion(fileTye));
            response.setHeader("Pragma", "public");
        }
        // 获取图片存放的路径
        String imgPath = fileUrl.substring(fileUrl.lastIndexOf("/") + 1);
        return new FileInputStream(imgPath);

    }
    
    public boolean uploadPictureContent(String name, String content) {
        return uploadPictures(name, new ByteArrayInputStream(content.getBytes()));
    }
    
    public boolean uploadPictures(String name, String filePath) throws FileNotFoundException {
        return uploadPictures(endpoint, accessKeyId, accessKeySecret, bucketName, name, new FileInputStream(filePath));
    }
    
    public boolean uploadPictures(String name, InputStream inputStream) {
        return uploadPictures(endpoint, accessKeyId, accessKeySecret, bucketName, name, inputStream);
    }
    
    boolean uploadPictures(String endpoint, String accessKeyId, String accessKeySecret, String bucketName, String name, InputStream inputStream) {
        OSS ossClient = null;
        boolean found = false;
        try {
            businessLogger.info("oss请求参数：endpoint:【{}】, accessKeyId:【{}】,accessKeySecret:【{}】", endpoint, accessKeyId, accessKeySecret);
//            ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
            ossClient = (new OSSClientBuilder()).build(endpoint, accessKeyId, accessKeySecret);
            businessLogger.info("oss请求的文件:bucketName:【{}】，file:【{}】", bucketName, name);
            ossClient.putObject(bucketName, name, inputStream);
            found = ossClient.doesObjectExist(bucketName, name);
        } catch (Exception var10) {
            businessLogger.error("上传oss图片失败:", var10);
            found = false;
        }finally {
            if(ossClient != null) {
                ossClient.shutdown();
            }
        }

        return found;
    }
    
    public String downloadFileContent(String fileAllPath) throws IOException {
        return downloadFileContent(fileAllPath, bucketName);
    }

    public String downloadFileContent(String fileAllPath, String bucketName) throws IOException {
        businessLogger.info("oss请求参数：endpoint:【{}】, accessKeyId:【{}】,accessKeySecret:【{}】", endpoint, accessKeyId, accessKeySecret);
//        OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
        OSS ossClient = (new OSSClientBuilder()).build(endpoint, accessKeyId, accessKeySecret);
        businessLogger.info("oss请求的文件:bucketName:【{}】，file:【{}】", bucketName, fileAllPath);
        BufferedReader reader = downloadFile(ossClient, bucketName, fileAllPath);
        StringBuilder objectContent = new StringBuilder();
        if(reader != null) {
            try {
                while(true) {
                    String line = reader.readLine();
                    if (line == null) {
                        break;
                    }
                    objectContent.append(line);
                }
            }finally {
                ossClient.shutdown();
                reader.close();
            }

        }

        return objectContent.toString();
    }

    public String downloadLocalFile(String fileAllPath) throws IOException {
        return downloadLocalFile(endpoint, accessKeyId, accessKeySecret, bucketName, fileAllPath);
    }

    public BufferedReader downloadFile(String fileAllPath)throws IOException {
        businessLogger.info("oss请求参数：endpoint:【{}】, accessKeyId:【{}】,accessKeySecret:【{}】", endpoint, accessKeyId, accessKeySecret);
//        OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
        OSS ossClient = (new OSSClientBuilder()).build(endpoint, accessKeyId, accessKeySecret);
        businessLogger.info("oss请求的文件:bucketName:【{}】，file:【{}】", bucketName, fileAllPath);
        return downloadFile(ossClient, bucketName, fileAllPath);
    }

    private BufferedReader downloadFile(OSS ossClient, String bucket, String fileAllPath) throws IOException {
        BufferedReader reader = null;
        OSSObject ossObject = ossClient.getObject(bucket, fileAllPath);
        reader = new BufferedReader(new InputStreamReader(ossObject.getObjectContent()));
        return reader;
    }

    private String downloadLocalFile(String endpoint, String accessId, String accessKey, String bucket, String fileAllPath) throws IOException {
        businessLogger.info("oss请求参数：endpoint:【{}】, accessKeyId:【{}】,accessKeySecret:【{}】", endpoint, accessId, accessKey);
//        OSSClient ossClient = new OSSClient(endpoint, accessId, accessKey);
        OSS ossClient = (new OSSClientBuilder()).build(endpoint, accessId, accessKey);
        File outFilePath = new File(fileAllPath.substring(fileAllPath.lastIndexOf("/") + 1));
        businessLogger.info("oss请求的文件:bucketName:【{}】，file:【{}】", bucket, fileAllPath);
        ossClient.getObject(new GetObjectRequest(bucket, fileAllPath), outFilePath);
        ossClient.shutdown();
        return outFilePath.getAbsolutePath();
    }

    /**
     * 获得url链接
     *
     * @param key
     * @return
     */
    public String getUrl(String key) {
        String objectUrl = "";
        // 设置URL过期时间为10年  3600l* 1000*24*365*10
        Date expiration = new Date(new Date().getTime() + 3600l * 1000 * 24 * 365 * 10);
        OSS ossClient = (new OSSClientBuilder()).build(endpoint, accessKeyId, accessKeySecret);
        // 生成URL
        URL url = ossClient.generatePresignedUrl(bucketName, key, expiration);
        if (url != null) {
            objectUrl = url.toString();
        }
        ossClient.shutdown();
        return objectUrl;
    }

    /**
     *  判断对象是否已经存在
     *
     * @param key
     * @return
     */
    public boolean doesObjectExists(String key){
        OSS ossClient = (new OSSClientBuilder()).build(endpoint, accessKeyId, accessKeySecret);
        boolean objectExist = ossClient.doesObjectExist(bucketName, key);
        ossClient.shutdown();
        return objectExist;
    }

    /**
     *  删除对象
     *
     * @param key
     * @return
     */
    public boolean deleteObject(String key){
        OSS ossClient = (new OSSClientBuilder()).build(endpoint, accessKeyId, accessKeySecret);
        ossClient.deleteObject(bucketName, key);
        return true;
    }

    public static void main(String[] args) {
        AliOSSUtils ossUtils = new AliOSSUtils();
        ossUtils.setEndpoint("oss-cn-hangzhou.aliyuncs.com");
        ossUtils.setAccessKeyId("LTAI4GATtVXmYuVd7t8q1QYD");
        ossUtils.setAccessKeySecret("nKXmN6nInFbHopmOtMbJ9R5IWqAjDx");
        ossUtils.setBucketName("ubbio");
        try {
            String fileName = "D:\\jar\\2021\\08\\5.jpg";
//            boolean ishandler = ossUtils.uploadPictureContent("0002Plot02.jpg", "/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAErASsDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD1fSNIg1S2ubu7utTaZr67T93qVxGoVLiRVAVXAACqBwO1Xj4Z05Rk3OrDnHOsXX/xyjw0ypo9w7sFVdQviSTgAfapaz9c1W7t9RijtyjyLnMeDyx3hFOM7WIORghmCsOrKARvKagupM5KMblsaDpjtEIp9YkWQZEiatdFAuM53eZjByMYznPscTf8IxYf8/Grf+De6/8AjlW9L4tF3TtPIw8zzHKlirEsudpIwMkcccHHFXqqVk7IIttXZjf8IxYf8/Grf+De6/8AjlH/AAjFh/z8at/4N7r/AOOVs0VJRjf8IxYf8/Grf+De6/8AjlH/AAjFh/z8at/4N7r/AOOVs0UAY3/CMWH/AD8at/4N7r/45R/wjFh/z8at/wCDe6/+OVs0UAY3/CMWH/Pxq3/g3uv/AI5R/wAIxYf8/Grf+De6/wDjlbNFAGN/wjFh/wA/Grf+De6/+OUf8IxYf8/Grf8Ag3uv/jlbNFAGN/wjFh/z8at/4N7r/wCOUf8ACMWH/Pxq3/g3uv8A45WzRQBjf8Ixp/8Az8at/wCDe6/+OVl2sXhq8llji1LVh5SNIWk1O9jRkU4ZkZnAdQerKSBkeorqZ0aS3kjRtrMhAPoSK4OaxvNW0az0+2sLiGbT9Nlt51mhaJWcoqCNGYAOCVPK5GAOeRS7gaMC+GZ7S4ul1HWUjt1V5BNqF9GwVvukKzhiG6AgHJ4GTTlh8PPZNdLea6VWTyjEL6/84PjO3yt2/OOcbenPTmq2oCbVr46vbWN4LW1W23xS2zxySbJvMYKjAM20cjA5PAzU7apcWJ1PVoNOvZFvp447ZDZzZG1MGSRApdVyCPu5OB2INPp/X9ah1/r+tC9Y6No+o2q3Nreau8TEjJ1W8Ugg4IIMgIIIwQRkVY/4Riw/5+NW/wDBvdf/AByp9BSJNJj8pp33u8kjz27wu7sxLHY4BUEk4GOmK0qGBjf8IxYf8/Grf+De6/8AjlH/AAjFh/z8at/4N7r/AOOVs0UAY3/CMWH/AD8at/4N7r/45R/wjFh/z8at/wCDe6/+OVs0UAY3/CMWH/Pxq3/g3uv/AI5R/wAIxYf8/Grf+De6/wDjlbNFAGN/wjFh/wA/Grf+De6/+OUf8IxYf8/Grf8Ag3uv/jlbNFAGN/wjFh/z8at/4N7r/wCOUf8ACMWH/Pxq3/g3uv8A45WzRQBjf8IxYf8APxq3/g3uv/jlH/CMWH/Pxq3/AIN7r/45WzRQBjf8IxYf8/Grf+De6/8AjlH/AAjFh/z8at/4N7r/AOOVs0UAY3/CMWH/AD8at/4N7r/45S+GGc6MyvLLL5V5dxK0sjSNtS4kVQWYknCgDJPatisbwx/yCZ/+wjff+lUtACeGtw0e4KAFv7QvsAnAJ+1S96bN4Wsbu4M900krbvlXPyqvzDAByckMctnOeQRT/DH/ACCZ/wDsI33/AKVS1s0LSXMtyZQjNWkNRFjXaoA5JOBjJPJP4mq1/fpYRIxhlnllfy4oYQN0jYJwMkAcAnJIHHWrdZHiSS2i0sPdWFzeRiVABbSKkkbE4Dhi6beTjIORn0zS2WhaHW2sySXUUF3pV9YGYlYmuDEyuwBO3927YOATzgcetatczpNqkepRO2ga3EwztuNQv1uVi46gGdypPTKjPPpmptc8Of2xepceRocm2MJnUNK+0ydSeG8xcLz0x1z61QjoKK4/wt4W8PXHhDRZ59B0uWaSwgd5Hs42ZmMakkkjkk1r/wDCIeGf+hd0j/wCj/8AiaQGzRWN/wAIh4Z/6F3SP/AKP/4mj/hEPDP/AELukf8AgFH/APE0AbNFY3/CIeGf+hd0j/wCj/8AiaP+EQ8M/wDQu6R/4BR//E0AbNFY3/CIeGf+hd0j/wAAo/8A4mj/AIRDwz/0Lukf+AUf/wATQBs0Vjf8Ih4Z/wChd0j/AMAo/wD4mmv4T8Lxozt4d0naoycWMZ/TbQBt0VzEvh3wxI32a38O6UJpIt6OdOjIQMGwzLwcZX26gfTMtdB8JGyg+zaTbtGgUTGexhDW64D5kZ06hSFOSTg5POWraNGTVxXO6ork4fAHhudrOe60azM0Ea7gkKJHI443EKqhu/GADkZHAxOfC3h2OdpLjQdIhhhRixNnCImUngklc7gF55A+fvxiOVdGFzpaKwIvB/h1G8t/D2lyKFz5r2UOSSTxgKOnFTf8Ih4Z/wChd0j/AMAo/wD4mpasM2aKxH8H+GyjBPD2jq5Hyk2EZAP0xTU8GeHBIXfQtKbKKuz7BEFBGckfLnnPckcDHfJbQDdorG/4RDwz/wBC7pH/AIBR/wDxNMXwl4cMrqfDOkhQBtb7HF83rxtpAblFY3/CIeGf+hd0j/wCj/8AiaP+EQ8M/wDQu6R/4BR//E0AbNFY3/CIeGf+hd0j/wAAo/8A4mj/AIRDwz/0Lukf+AUf/wATQBs0VyV14Z8H2cXk6hp+jBMRR7mtYo5N7EgMzKBjcRgYAHB+gp3+g+HdMvSjeHtK+yBi0iJZpLKQ4Y7yxIESAqQM5zggAYrZUW9hN2O5orzCDS9Dt70vb6JZXenxM0l159lC8xDOUyqon3VK8Y98juKet6NZSWD3+maHo0sV+0dnZ+Tbq2AXw8rbVx26qRgZ5B6arCSckrqz6/p+voR7RHrdFcXJoHhy2YvbeGdHm8+6WECWALlx8r7dy4UAKMAYDHJ6nJsWmnaXYeN9PbStOsraCbS7ljLaRogl/ewcHaOcev8AtVzyptK/QtNM6ysbwx/yCZ/+wjff+lUtbNY3hj/kEz/9hG+/9KpagYeGP+QTP/2Eb7/0qlrZrG8Mf8gmf/sI33/pVLWzQAUUUUAFQ3LXKxg2sUUr55EspQY+oVv5VNUNy1ysYNrFFK+eRLKUGPqFb+VAGZ4Q/wCRK0H/ALB1v/6LWtmsbwh/yJWg/wDYOt//AEWtbNABRRRQAUUUUAFFFFABUMX2jzJPOEQj/g2E56nrn22/jmpqYkiu8ijdmNtrZUgZwDwT169R9O1NbAZ06X3nRrb6hE1wjGWWF1ADR7HVRgAsBv2nPP3Tj0qpqUNrqdjeWpUywzQrcPFc28zJ1BB9+F/1Y6nqOTWy7JOs8EdxslVdrGMgvGSODg5we4yKw7u3toJ11R7e8vPNi4UqcMcmRN8YUcrjALAleB1rqoybkns1tb7/APhiWRWel/Z9GhRUjvpUunu5prXy4vMnVzkEKoDEY2k4BOznBrcDXMzwkwvEokyw3qcqYz14PRjjAwcgHOMg1bJLa7mXUEknY3sUUyAYAVFGQN6DkZcnBZgcnHGavvAPNM0QjjnbYrybAWZFJO0n/gTY9NxNKtUvL3t/8/8ALyQJBDaw28kzwpsMz73AJwW9cdAfXHWpqKK5m29WUMIk84MHHl7SCu3knjBz+fGO9DxRyPG7xozRNujLKCUOCMj0OCR9CaIlkVCJHDtuYghccZOB+AwM98ZpkdwpaKKUpHcSIXEO8FsAgEj1ALLk+49aevQCaimOzhowibgWwx3Y2jB59+cD8aHjWQoWLjY24bXK8++Oo9jxSt3AfTHco0a7Gbe20lRwvBOT7cY+pFPpk0MVxC8M0aSRONrI6gqw9CD1oVr6gPqLzJRc7GjzGw+Vl7eu7+mKQ3UIu1tTIBOyGRUIxuUHBI9ccZ9Mj1FTUardAVXtknN3ui8l5VEXnxkB2UDIOeowWbHpye9cpqSnS7q4tba8lskvLmFfOiEKsCV2vI4aPL5ZogWBJy6jK81s6mWFxPNaxSwzqqwvdqAAAAX+bcQCoyPm+bG9gMfNWVY3t5F4f042+p2iJMVhjnktwqD5iS21flOQFVSDglh6gHvoJwjzvVOys/z69v8AgGcmYmpPBpsdvqmnS3hsTIrPNBcmd47dnXfO7szttUqxwOG2gNlVIqneQ6td6tcG8nsW0+wlkFu5JE32dANwMvLHaVBOCWyCfvAEVbyJrW21BLyzSWeSzuY7FSjsZnO4FETeSQ+9hhTlMsflBrSTWblLq+8O6nmOJ4fs8qR3Pm/PIoO3zpCTvOSoDEZ9Bwa9CVT2MFKK5vPe6fVeetm/MxckXNL1i/1KPSbm8t5L6SSeRgqJsESid1zjh9yjahBAHXcWyMb6Rw2/juyt4oDGV066YuSWMoL2wDFj1Py45JOFHYiuR0RdH1Sa10S1vreSEhrhlhISSbZ8u9MKFK5Tytu0ECPcOxrsY4VtvFukwxW8Vvbppt2sMMahQi77XjA4HOenbFcGNcU7JW301Wl9O35eZrTd0dFWN4Y/5BM//YRvv/SqWtmsbwx/yCZ/+wjff+lUtecah4Y/5BM//YRvv/SqWtmsbwx/yCZ/+wjff+lUtbNABRRRQAVDczSQRho7aW4JONkRUEe/zMB+tTVDc3MdrGHkWVgTjEULSH8lBP40AZnhD/kStB/7B1v/AOi1rZrG8If8iVoP/YOt/wD0WtbNABRRRQAUUUUAFFFFABRRRQBWDTRwzIiSSyRglDKyjzDjIGR09On51TsYIdMmMQVraOeR2VGm3I0jOWONxzuPLbRwOa1awr++ks9Qa41E/Z9OgBkSUXAAbCEnKgbmPBO32zzW9O87xX/D/IT0EtLC4sI/JtmkltbVdqWpLR+XsUGNIzxuGCASxYEjtyBo2X22SFHuFMDb97RswkJBXO3IAxhjjvwvvVGdvIa6kuLeOS3uLxAsYijBnBjjUElmG4hgeTzhQADgZ15BKSgiKAZO8sMnGD0984/DNVVk2k3Z36/1/kJCrGqSO4LZcgnLEjgY4HQfhT6iXzlMSMA42HfJnHzDHb3578YqWudlBTEhijeR0jRWlbdIyqAXOAMn1OAB9AKfRSuAUUyaaK3gknnkSKGNS7yOwVVUDJJJ6ADvT6LdQGSuY4y4jaQj+FMZP50+muiSRtHIqsjAhlYZBB7Gmi3hEkcghjEkaGNGCjKqcZUHsDtXj2HpT0sBJUMyTuU8mYRgH5spuzyPfjv+dMntWllSSOeSJgy79pyGUEnbg8DJ6nGccfSJbmeaKEwGOVgR5rxsDGxB2uoOSQQc9u2KuMeqYiLUbp7S5hka6jjiLLuWX5E25IbLkYzyCFyD8vcZrivEFxe3GuyQwtcxxJsaGKYO1vdsGaUsjknJEQYgKAARhiRtFd2LryLX7Qy3EluUaYsYnMoychfLC7uAcYxkYAPNed+I7Sa6js47m3gjgiE9rbRXCrbkb4Q+7dgjbt3K+MKAG4LBcejgIxc7SX9en9PW9zOpsZ0YgNlpkl5a3dykim3tnJFyLVXVkMZjBLMfLlJIySdnTCmqN1qWqWhhZ7SPT9LtR9lxfxb1aSNso0UWQBIF4D4G5gOmeF12NNOuYJdWghg0ia28mSS1aVbYuWc+TlO3ykYwQOCQMmoZ1CXF08kOlx3cEL2pBuolaTzBkhREMlCQwGRvOcYyTj0dOZOyd72b169NfPXe2+5zSk0zR0y9tLy7e41KW+S3aQ3say7S9zE0cKx5UksAUQL5meW3jPUV2WjC6Piqwmmnmmhnsr6SEzjDhTNb447DG0j6ngDAHK+EtVtrmOS4Elm0F0kSXClUmcAMU3HJ8woGABaQDA2hRgc9yka/8Jnpc4eZjLpt5xIGXA823IAU424yR0zjGc4Fedj6krcko2tZelt1t9+r2N6Op0dY3hj/AJBM/wD2Eb7/ANKpa2axvDH/ACCZ/wDsI33/AKVS15RuHhj/AJBM/wD2Eb7/ANKpa2axvDH/ACCZ/wDsI33/AKVS1s0AFU9R1AafDGwtp7mWV/Ljhg273OCTjcVHAUnkjp61cqrf6fbalbiG5WQqG3K0crRsp9QykMOCRwehIoAoWPiKG/mgCWV7Fb3BKwXM0YRJGAJK7Sd4Pyt95QDt4PIzZvtd0fS51g1DVbG0mZd4juLhI2K5IzgkcZB/Ko7Pw9pen3CTWlsYvLB8uJZX8qMnqUjzsUnnJABOT6mtSnoBjeEP+RK0H/sHW/8A6LWtmsbwh/yJWg/9g63/APRa1s0gCiiigAooooAKKKKACo55TDBJKI3lKKTsjALN7DPellMixkxIrv2Vm2g/jg05s7TtxuxxnpTXcCP7Qm2FsSYmOF/dNxwT83Hy8D+LHOB1IFZEVulkPtlnc2UdvcssslywGJyz/Llu/wArAKc+gFbSb/LXzCpfA3FRgZ74qpeJFqGmTIbczRnIMMsI/ebW5XbJgc44J45BzjmtacrO3R7iY24khs7g317eJDGv7mMNLsQ7tuAcnBfcMD2OKt/vDKhUp5W07gR827jGO2PvZ/CqKxPaz3jK5VbqaN0ZI95RtioVIUdMIDuJP3j0AFT2sc8DmPyYUtstsVDjywMBQAAM5+Yn06c9aJJW3/r+v67hYeVY2jVg5MjbRtQkA4J5IHA46nAzgdSKfTI1dd2+TfliRxjA9KF8zzX3FfLwNoA5981loMZDcCd3CxSqikje6bQxDMpAB5425zjBBBBINFs4lgEqTpOjksjpjBUnjBHX60XBWMLMzS7YzkrGpbdnjkAEnr2pDdREL5TeaWdoxsBYB1ByGIBC/dIye/HUgVVrrRAT0xTIZXDIAgA2sGyT68Y4ppR5YUDkxPlWby2zgggkZxyOMdOlS1OwDJGdduxFYlgDlsYHc+/0p9MaKN3R2RWZCSjEZKkjHHpxSFSsjyhnbKgCPIxxnp7nP6CjQBXdlaMCNnDNglcYQYJycnpxjjPUe5qvd7Y2R0MEdxL+5SVyAwyCeM/e5GdtPkia6jgYvPblXWQqrAE4/hbqCPXH506dFZ4SYXkKyZBRgNnB5PIyPbn6VUbJiM/U2kske4twI84kkYIAsj5RRuIyxO0Y4B4HUYFcRrV7a2ms3F9a2WpyyCGQOt7CI7Zonf8AeYRtr7d2NxCk58skkFd3ZXhvJ1tVtdR0x9sm3NxFv8yRNwfGGGGDDPHTa34comq3tvYNFqq6dJcSMhn/ALNG6eWMzsPMVEyzRjehyASSXGATmvRw94RurN7W1V7/AC/4b8sqj0OeuNY/tLVpdLaSeIrei5eeKaPaQxCBVIY4JkYI3XGeSFJqpPIuhalO0l7DCLh/luR8ifIVhCsAMAYV1/hAIOcDmp7SXU7LV7k6hqMEFlZo7RXM0Pkh5QN6KC2Nu7g7Sfm59DiNZ7dbiawme3mjs5XVRCY8ytI2BG5jb5mHGS7Y9TRU5VJ88bxsrpXadtFq1vezs7q71WjOdt9Sb7Fe2Xhy5t9Lkh1JYtRWJoplkizHGNiqmTl33Lt3dDtKj5VwO/02YS6/oaFj50WlXSyox+eNt1qcMMDBwQeg4IrzvTYtMW1t72aSze1kWOKM3T7j5cbsOGOFRTu+42cZCkgkLXpVvdw3vibRp4FcRnTbwKHgeLpJbDhWAIHpxyOlGNnJ00pa6vX8LO2l9Lf8Mb0WnsdJWN4Y/wCQTP8A9hG+/wDSqWtmsbwx/wAgmf8A7CN9/wClUteWbh4Y/wCQTP8A9hG+/wDSqWtmsbwx/wAgmf8A7CN9/wClUtbNABRRRQAVDc2lteRiO6t4p0B3BZUDAH1wfrU1Q3NtHdRhJGlUA5zFM0Z/NSD+FAGZ4Q/5ErQf+wdb/wDota2axvCH/IlaD/2Drf8A9FrWzQAUUUUAFFFFABRRRQAUUUUAMmjSaGSKTOx1KtgkHB68jkVVu74RWH26KSE2ixmZ58lwIwN2VC/eyueh9OtXaqS6hEk8MKOjM8vlNknCkLkjIBG7GODjNXC7e1xMp6bboXhlgna5VFUS3RZcTuoaNj8p+/8AKA2RjgAdOL0UMi3k0vnDy2JzGB32oASSeCNp6YHzevNU4fLjs7aOGG5gljVLYK4UNGCFJ6nY2BgEru5BA6GrVjKJFPmwJbXjqss8AcMy5yASR1+6Rn/Z9q1qNtuXy/r+v0BFiIyGMGVFR+4Vtw/PAoQyEv5iKoDYTa2cjHU8cHrxzQ8aOUZgSY23Lgnrgj8eCarrLJfafBIkMsH2iMF1lPlyxBlz0APzjgY/WsUr6jLdFA4GKKkBjq7NGVkKhWywwDuGDx7c4P4UxZG+1vE33SgZMRtx2OW6Z6cdamop3AYZVEyxYfcVLA7DtwMfxYwDz0znr6Gq13MrRt5aC48iQGZEmCshA3j0Gc7eCQMHOexsyxJNGY3BKnqASP5U5s7TtwGxxkU4tJ3Agjkg81WiLObhfMDqGZCAB36DgjHTPPXBoKxmR4PtLiVyJdocbgAR0/2eP1NTJvEaiQqXwNxUYBPfAqPfFdwSLFNkEMhaNuVPIOD2IIP4infW4jmJrs63LFpuoaRqUVyQbho3jby4CqrhBKv7uTJ5GWxzzgjbXLeJLYR6x/a/2QvbXiyrdx3ioZLaZIyEAQsAwPTcpwAuS20ZHYeKIH8mK9s4TdXvltHAmWAIOH6qeOUB5znoAc1xWrkWV3CLjRWtbnUZPOu2ktg0bZjVvnKbiWMgYCIH5mAzgbQfYw9pQvBbprl/O2t+zXmrO+pjU21M3+zraaxOmm8Ee26R5ooosQzfeHl5iDKM7j8pOW24Gc5qlZO891PJFJ5aXDMskltIcozAErgc5DbuD8wwpK9ql03Sl1SG6SZxJFA6yRhJ2AEKlcKdyYdtwBClQvbcOcZ1zYx2F/fi4hntoIGcCeHygZHH3WCjgg9cnb0POMgcE0nGdPnXMtbPpd66XTd72tb1ucq1TOk0C40/T7x9Tna8aEOyNczIRtLLuUGNUZoxuKncwGAEbJ3YHaaVPeT+ItGN5FsZdMvF3M5ZmImtwScjGMBSCCQcnHABPE6DHpMd5G11eSRRzM92kD3cf2dZnG+OUvkOxYZP3CBg8Dbz3GlJcp4g0YXYHmHTbxi3mbyxMlqST1A5J6EjGDxnAqryfV4pb/dtfZL8badlY6qJ1lY3hj/kEz/9hG+/9Kpa2axvDH/IJn/7CN9/6VS1wm4eGP8AkEz/APYRvv8A0qloPi7w0Dg+ItJBH/T7H/8AFUeGP+QTP/2Eb7/0qlqgvjGaWWKOHw5qjM1wbd1eS3VkYKzYKmXIOBkZxkHIPTJ1Dob1jqVjqkLTafe213ErbS9vKsig9cZB68irVHaigAqG5hknjCx3MtuQc74gpJ9vmUj9KmqG5W5aMC1liifPJliLjH0DL/OgDM8If8iVoP8A2Drf/wBFrWzWN4Q/5ErQf+wdb/8Aota2aACiiigAooooAKKKKACiiigApAwLFQRkdRnpS1BCFicRtuebyxvmMeN+OOSBjPtTS0AbHDayhIzsuHtGChpMOyPtBzk9GwQc+9Ph3edcZSUAuMF2BDfKOVweB9ccg/UxNbXLeQn2w+WqFZTsAeU4xnIxt7ngdcduCxborcpY3ELKXDBZA2UYc7RuOCXKqzEAHGDk8rnSze2oiwkrm5lhaPAUBkYbjuB9TjAOQeAT2PGabZNmDymZWeEmNsSFzx0ySByRgn3PfrT1jaMxJGVWFEKlCpJ7Ywc9uexzx07y1DatZDEVgyhlIKkZBB4NRGYyQSNa+XK6llAZ9q7gcEEgHHPsakREijWONVRFACqowAB2ApNrLK8hlOwqAEIGFIzk5685H5fWkrAEokKDymRW3LkupI25GR1HOM4PY889KIpUnhSWJw8bqGVlOQQehFOBDKGUggjII701BIC/mMrAt8m1cYGOh5OTnPPH0o6AEiswXbIUwwJwAcj05oKOZlcSEIFIMeBhicYOevGD+f0oiiSFCsa4UszEZ7kkn9SafRfsBEkhe5kRZYyqABkA+ZWPPJz0xjjFPEaK7OEUO2AzAcnHTNRzqJgbaSF3ilRg7AgADgYPOecnoOx6cVJIrPE6o5jZlIDqASp9eePzpsDGmsll06RWhsraRCJF8uYsE2oqsVbaPLIIK5AOAAcZJA821VF1eWbVDFeTJZMyqqXai2WSRYn81LjHKARscMCdxThSQK9GvoI7ayuWgRI7YKJUlRB87SSM0nzDceSVY/KOT1PO3lfE2kzxW32T7apSGOSc2zxLIZgAMukaled0rfNlMEKu1shh6mGqKN2nr0326rrutO6vozCqtDjnvpp7PT7W3srlr6X9/MVuS8cZ3lsylVLAKQNwGGOSB73fLuLe9OnR3cEty+4xzSIwSXCrv3ggAEcgKCRnHPBNR2LG2khtydSvb2CN2ghiVVRWRfldyN+CWGMOTtwCRxkNa1eS48i2ObqRQyPcQmITyYB88nLYA+UEHr82c8muTFRpqq07JO7679b31tsrbPq9Fbm05b2N/wAO6NcRLDfRwQyXFj59m0d3b83iERgTLtBZUBGFXB+UDkZrqbS6N54y0+UyRFhp97E0cWSoZZoFLAlQecY7j5eCep5fRLy5s0Mt8z6l9o+zqlxDM7Qfd27fu5xvEzH0ygHJIHR6dp01l4zsJJTCiy6bciK3hQhYUElvhctyep7Af7IJObrRapfvN1t+bX4/orbHVS2OvrG8Mf8AIJn/AOwjff8ApVLWzWN4Y/5BM/8A2Eb7/wBKpa4TYPDH/IJn/wCwjff+lUtc1Nq1vd31vqNzrvh2xvoOVtLiJ/tEJwR5b/vlLH5jwU6nIFdL4Y/5BM//AGEb7/0qlqKCLxXIHMuoaTCRIyqDp0jblB4bIuO4wcdqXUOhrWNxJdafb3EsDQSSxK7QtnKEjJU5APH0FVtXju3gge1WSTyZlllhjl8t5VAPyhsgZztOCQDjBOCavQiVYIxO6PKFG9kQqpPcgEnA9sn60+m99AWxyuiW2qm9gnuLXU7aXcxu3vL1ZI5gQcCONZHVDnaeAuAMZPfavptYjnUafY2M8O3Ja4vXhYNk8YET8Yxzn8K0KhuZpIIw0dtLcEnGyIqCPf5mA/WgDM8If8iVoP8A2Drf/wBFrWzWN4Q/5ErQf+wdb/8Aota2aACiiigAooooAKKKKACiimSmQRMYUR5APlV2Kgn3IBx+RoWoD6riKKG73KJQ02ScZKZ45PYHpVimLEiyvIqgO4AY+uOlNOwDXEbXMQZGLqC6NtOB2PPTPPT61HBKrXF2qrKSkqq25wR9xT8ozwMHpxzk455kyWuyA8oCJyu35GyeDnHUYPAPfntSqZjGxdEDgttAckEZ4yccZGM8HHvVdBElFVUlmmnWNklhMQVpGXBjckHKAkZIHByAOg9xVqpasMKhW4ilk8pcvkOCQpKjaQCCegOT074PoamooVgIyyQ+VGEYBjsUIhIXgnnHQcfyHepKKKQBTIzKVbzURTuIAVi2Vzweg5x27ep604OpcoGBYAErnkA9P5H8qWmAxXZpHUxsoUjDEjDcdsHP54qpeiaOeG4ieYhchoIk3GXgkDk7V57n2GRVuaMTQyRFnUOpUsjFWGfQjkH3qK0SKCP7Kkhd4gC5IAJJySxwAMk5PAqou2ojEl1WHAslZJPIjWOcLEY4slFYPGD98DK/Kr8Bu5xXN6ha2+rWEZtJMT7YVW8axdEzvbK7pM/KDJ8sYYHOQW9Oy1KCZ2gjhi2WsHLlRnIIYBUUZBIO3O5cYPHI45LWdNshcx2BTVrOOGdJAEmGxx85UKVy2JGTJXj/AFQJ2lhu9ClKLj7ra66a+t/8l03Mql7HKXVnpC6lNDqbpZRrbNAJYLsl5p9qhmjwcKTnONhJwQeDzHDqeoXeq30F4IUgvLd4vtkMjT+QmdhBjVQd2RgYwoJ79SsGoRyw4vYiHnaR3uEgkkV2UlvvBiUV1QrhQxzjqAVqKbSLA3N1cR3LokE7zRbTJEsSphkVtp2qHB+8TjBUjH3atUlKo1V1tdLTbXda6PRXu2vvsctnujS8Im1kuvs1hpjtqksz+aZTiJUVwWVXDSLiMkbSVGUZQB826vSLhlbxvpoDAldPvAwB6HzLY1x/geb7Ra6VcNJBDcSQG4nSe3d5ZEwQHDgooHl+Wpfa24gegJ6+UR/8Jppbxqo36ddkkDr+8tefyxWWYyvUs1a3e+/r1Wmm/qddJWRuVjeGP+QTP/2Eb7/0qlrZrG8Mf8gmf/sI33/pVLXnGoeGP+QTP/2Eb7/0qloPhfTc/I2oQp2jg1K4ijUeiosgVR7AAUeGP+QTP/2Eb7/0qlrnBrVgdWngb4i7bdIUdX8+x5cs4YZ8rsAvHvR1H0OzsdPttOhMVsjAM253eRpHc9Ms7EsxwAMkngAdqs1BZukllA8d19qRo1K3GVPmjH3sqAvPXgAVPTYgqG5uY7WMPIsrAnGIoWkP5KCfxqaobm7trOMSXVxFAhO0NK4UE+mT9KQGZ4Q/5ErQf+wdb/8Aota2axvCH/IlaD/2Drf/ANFrWzQAUUUUAFFFFABRRRQAUUUUAMldo4XdI2lZVJWNSAWPoM4HPvT6ZHJ5m75WXaxX5hjPuPan032AKZHKkoJRsgMVP1BwaJRIYyIXRJOzOpYD8AR/OiJmeJWeMxsRyhIJH5cUW0uA+imRRiKMIpYgd3YsfzPNPpAQqoe4aRoCrx/u0ckfMpAJxjtnjn+79KfHIJASFZcMV+ZcdDjP0oiMhhQzKqylRvVG3KD3AJAyPfAp9NsBkcgk3YV12sV+ZcZ9x7UPEkhQuobY25c9j6/rT6KL66AJtUMWCjcQATjkgf8A6zTHjZpQ4mkRQjKUULgk4w3IzkYOOccnIPGJKZIJCo8p0VtwJLKWG3PI6jkjOD264PShPUBsBfy9sgfKHbufbl8fxfLxz+H0qvM4truABrg+fIQV3Apnb33dBxwF7k8GrtRvCkkscjbi0ZJUbjjn1HQ1UZK92Bj3t7Ibe2nuVNkFjWbeZX2iTuhQbSwAzndjtweccVqy3KeKpY7a6u7q4ieG9tFIcGR8SJJGSGEY3KB85Q7UkxgjBHo0iK98RM4dWhO2Ha2MZ+Ynnaf4ccZHPJzxx2uyyadrMcsFnZtiXypJERi8Yc78lVkHljauWJ/1nl7TtG3Pp4GqlJxit18vx+5+rM5rQ5o6NfHT7q7aSW91BbJktLZR88MqPuGTgKQXYZHQhSADnAb5ZTX47bzFgv54Y1ji+wyTiBY1DFAqbFK/NtAb5gFHJPS0YrjU4ri2yYreUsZAZ47praMEhGDl1zEhYPs2uBg4YcYueI3TSNI05YNOWaWKWRooY/8AV3GwbAkhO8liikfezlRnP3R16+19ndczv27dellbtr31Ofl1uavhHRgISlxGZQpm855pcmQPKzAKmzb5RG0h1K7toyoxgblwyf8ACcaZErLuXTLslQeQDJbY49OD+VZkOtCBI9RninhsfK32plYRFwxICyRhFI2kqqj5shgSCQSLwkMnjPTDKkaXK6bdrMsZLAHfbHAYgZHPp3ry8ZGbm5SVl+vX+umx0xslZHQ1jeGP+QTP/wBhG+/9Kpa2axvDH/IJn/7CN9/6VS1xFh4Y/wCQTP8A9hG+/wDSqWnXF0+oaUt5Zi6VI5llURgbp0VgTtG4fKwB6nkdj3b4Y/5BM/8A2Eb7/wBKpaxTfXGn2EENprsAsm3RWq/2NPPPsXjI2P8AMqjGH2benXPKCx18E8dzbxzwuHilUOjDuCMg1JVbT4reHTbWK0cSW6RKsTht25QBg578UX2o2OmQCfULy3tIS20SXEqxqT6ZJ68GqejBalmism08T6DqF8LKz1mwuLkjKxxXCsW69MHk8HIHTvWhc2lteRiO6t4p0B3BZUDAH1wfrSAzPCH/ACJWg/8AYOt//Ra1s1jeEP8AkStB/wCwdb/+i1rZoAKKKKACiiigAooooAKKKKACiimySJEm+R1RcgZY4GScD9aAHU0yIJViLqJGUsqZ5IGMnHoMj8xSRSebCkmxk3qG2uMMM9iPWhYYkkeRI0V3OXYDljgDn8AB+Ap6dQH0UzY3nGTzX2lQPLwNoPPPTOfxxx0p9IAooooAKKKKACmRGQxKZVVZMfMEbIB9jgfyp9FABTHk2FBtZtzbflGce59qfRQBXuYEuisE0LPD98nfgZBGAQDk/wAuOazL20nuobpWLRvcRCWLcCvkOmBhpI2UlTkHGc/f5wcDYlRpIiiyvEx6OgGR+YI/Ssu/e0nQLcWUs6zmGOSKWMusYLNsYoeOG6kc4wTwBjejJ3Vv6/r9LCZyttptjqUEl/dQiK1tY1up7a1j3B5BCw/cujfdG4nAyd4BDcV1WlzC+gkW8slS4tJyciLCyHnEqA5wGGe5I55PUwQJBaRzpqMouZrco0krQqoVN+5DkKoCoct1O3GSSealubX7FHp8eL29SJBFIHbzN4UZDuMYL5UYPGSa6q1R1Xyv5fd09fPyISsW57gSPAYzbzWzIZSoG95BxtKDpjkEnnt65FS5/wCR10v/ALB15/6MtqtCykuNNtUee5t5o1Ql0ZBJkAZDYG089QBj2xVOcFfGekgsWI028BY4yf3ltzxXFO1rItG3WN4Y/wCQTP8A9hG+/wDSqWtmsbwx/wAgmf8A7CN9/wClUtZjDwx/yCZ/+wjff+lUtYEItbfyZLM63cXV1bPHYxp9n8y3tVYEsm7ChTmP75L/AHeOtb/hj/kEz/8AYRvv/SqWnxeGtLh+0eVFMhnTy2Iupcomc7UO792ueyYFL+v6/ruMuaZ9l/sq0+w5+yeSnk5znZgY689PXmpbi2gvLd7e6gjngkGHjlQMrD3B4NOiijghSGGNY4o1CoijAUDoAPSn1T1ZK0Rnafo8Gm3M80M1y/moiBJpTIEVSxABb5urHqT6DAGKW+0a11GdZp5b5GVdoFvfzwLjJP3Y3AJ564z+VaFQ3MMk8YWO5ltyDnfEFJPt8ykfpSGZnhD/AJErQf8AsHW//ota2axvCH/IlaD/ANg63/8ARa1s0AFFFFABRRRQAUUUUAFFFFABSEAjBGaWigCGOfzLiaMIwWLaC56FiMkD6AjnpzjsafGjIpDSvJliQWA4BPTgDgdPX1zUEkkcU8rRWxkuSqBiqYLDLbQWPYHd64z7043tutsZ3miVQ2w/vBgPnbtz0zu4x61bi+iEPL/Z4ZZbmaNY0y5cjYEQc8knt68VLXJXVzZ+Zb3k9zHMJo5rZnYxwTeWXTdiTIbEa72JQj7pPUA1b0eS3tzNcv8AaopPM+yutzMrMVV2WN2zyM8gE8sCCck5rolhmoc39f18hX1OiorIl1qKzY3F1PF9glZfIliVnyGVdpJXI2k7/mOO31q5ZXF1O9yLm0+ziOQLEd4beuxST+DFh/wGsHSklzPb+vy6jui3RRTZA7ROI2CSFSFZlyAexxxmsxjqKhXfPBC+ZYSdrlSBu/3TnP44/OpqbVgCmxyJNEksTq8bqGV1OQwPQg9xSTI0kMiLK8TMpAkTG5PcZBGR7giiKSOaFJYXV4nUMjIcqwPQgjtRbS4BFFHBCkMMaxxRqFREGAoHQAdhVGa4khlET75Iy77vMVcy/LuEcYBGeCecHiNgeuavSOUC4RnywX5R0z3PtTLfyVUwRSb/ACDtYNIXZTjOGJJOcEHnsauLtdvURFcWrlLVbYRokEikxksqlMFSMKccA5AIIyBwOCJgLe7jhmHlzR8SROMMOnDKfoeo9ajvLU3axxM6+QWInheMOs6FWUoc9skH8MdCaLdLgSO8jkRknETAHbzgYIxxgZwcnnrRe8b31Ae0XlLK9tFEJZGDMT8u84AySBycAD8BWTLFHF400wRxqgawvWIUYyTLbEn6k1spIXeRdjrsbblhw3AOR7c4+oNZNz/yOul/9g68/wDRltUNvYZs1jeGP+QTP/2Eb7/0qlrZrG8Mf8gmf/sI33/pVLSAPDH/ACCZ/wDsI33/AKVS1s1jeGP+QTP/ANhG+/8ASqWtmgAooooAKhuVuWjAtZYonzyZYi4x9Ay/zqaoblrlYwbWKKV88iWUoMfUK38qAMzwh/yJWg/9g63/APRa1s1jeEP+RK0H/sHW/wD6LWtmgAooooAKKKKACiiigAooqGa5S3OZvkhCM7zMQETGOpJ4zn9DTSbdkBNUVxcw2sfmTSBR0A6ljgnAA5JwDwOadK5iheQRvIVUsETG5sdhnAzWd9ssooZLuKWGEkzOyGSNBMyfKzMeem3k54HXpirhDmEQ392NSC22laipnSVllSCVD90fOj/xKRkDjBBI5Fcpf63qWmaJHCY4pIVuDbXMj7mEahPnJLMWlIKyMSpJwMHnJGzf6VabIFfTY4JWba80NsXRsnzG2qgPBLyYc4IJbn5snhNVuprvTPttvdXs+kyKIXuZXctFLEwMSlmK7vnJBYEkkNzllA9OhThJRVrq/X/Pr5Ld2t5GFVtI2dN1m6utWuodTlSMaePLt5WmClAy/M+9l+YKEdyGzymSCQCFs9Z8N/aV1GzuDEwSW+jhtllZlaTgGRAeXZmHynAPy4zxjnjJcLd2lvPc6jPJZpE7GCMxzFXLx4SIKDuRZQflwRgdOCGi81DTtQuYU01LjVmkaUzXKI5EaBW3lpX6KSd23aMqCMdK2o2qScdtF1srddGr7O+q05vUyjUlfU9DW7vTJNau9w8ySbbqSNH2AkoUKhWJU+Xg7QRjJJHzZPQoluxFtcKhkaRp44pZPMY7XB3gHkAEqePu5A44rkYNesbjTS0enWnlQWduLYSYWMiQKyx9N2DhQMKQdntgW5rm/c3MehXS3z24RXtbq52CFxLJljIPnONhXDDDADk/NXJOlKWj93+l93z9L6HTGSOns7prmMmSCSCRTho3HT056Hjnim3MtxCJpd1skCRlt8rFdpAzlj0A9T6ViTAa2kBh8q7IESzGO7Ji27lLEBWwsgPzIwGcpwRnNST3ebeYvdXjPGryvEjJEu5gAtuXH3X+ZcYYHJznGKwVFXuvu/r9SrmwpnjSSeUtITwsUWCANxwRnByQRnnHHHuy2c3vlXaSXUSEA+RIgXs3UEZ53A9f4R75yp3RNSk0tpxa28sTXBihjaLamd0khmDLglic7efmBPWr7G8ju42hukltplCwxmFmC4AJJkBPUBsZGMkc9MzKnZevl0/r/hwuN1B7n7Zm2tomeG2dvOaMs43A4VOgOSq5BYZ4q9azi4tklGzJGGCOGCsOGXI64II/CufXT7S2tdR1TUI2tl8jdPNMiPIhiLOHBwxIX7y7skYHFM03UP7dv4b/AOy3NpJBcy26fw+ai8OH+UggMOxxnODwc6Sopw02XX9Pv+4L6nRxyD7RNE08buNriMcMikYGee5VsHj07VNWXJdtFLHZXF9Aszsq7kGH5Xg4OQpZlcDPBAwOa0UhijeR0jRWlbdIyqAXOAMn1OAB9AK5pxtqxhufziuz93tBD56n0xR5sfneT5iebt3bN3zY6Zx6U+mKriVyzgoQNq7enrz3qNBjHED3MQeMNKgLxsY87exw2MA4OOuSM+9Zlz/yOul/9g68/wDRltWzWNc/8jrpf/YOvP8A0ZbUNgbNY3hj/kEz/wDYRvv/AEqlrZrG8Mf8gmf/ALCN9/6VS0gDwx/yCZ/+wjff+lUtbNY3hj/kEz/9hG+/9Kpa2aACiiszW724sraD7PJBC006xG4uELxxZBwWAK5yQFHI5YfQgGnUNzNJBGGjtpbgk42RFQR7/MwH61kDWLq2vrDTr5IFu55ym5AQkyBHbemTwcqMqSdue4IJu32s2unTrDPFfOzLuBt7CedcZI+9GhAPHTOfzoAreEP+RK0H/sHW/wD6LWtmsbwh/wAiVoP/AGDrf/0WtbNABRRRQAUUUUAFFMMqrMsRD7mBYEISOMdT0B56HrzjoainnmjV/KtJJWVkA+ZVDAnBI5/hGSc/hTUWwLFMkjWVQrbsBgw2sV5ByOnb271XmluBfxwxTWoVgHMb58wqOGIGfUpz7+4qHVp3jtZEawN1DIY4yiDcTvbaxK4PCghu/f0q4wbkkuork0Z1AhvMS3UhgBgk5G7k/wDfPT3rH1O4s7S923N8xlknjX5CkbxqzLsTeSOCyk7cksCcA01dS17+yzeG0trRIo5SRfzbcqEYo7kD5eQuc44Y5AIxSxT6ss0iCUXDxQpO6rIn3m25RR6YViCdvJ9OnVCm4Su2vk/+HJbMS4jGpWjWdxHcWenG9mugkUEySykSmTaqModic+YcKRksBwtcfda0un6l9u0z7ZA0gmub6C+mf5gf3SJsdxj502sxxyoHdVbudUvNSv8AT4bORbCScEzySQ3RHliM4kKHAUGNyE+Y8gE8EYrk2h8M+Ir9raK1b7ZJp73rXVtM84kTzGDKhKlt27khRzucEZr0qdlCUpxbWu1mte/V99r3RjUSIg8Op2V/EDFJI8K7rGOTyBMdwBQMoHUlV29CSoHUE48X9oawX0q51bzraztcRxWkhd5NybkZUf53Yo5AGGxjsa3NMvY5LySGfUC93DayWkRniaN5QwDDzIyvYAsvy889cHFdF0G18Rashu45p4WDyxC6+zRlDs+ZicKGJOSV5wBnBzXNgJRo1alOMW525u9m7K+qSS89N9exjZNnTRaMIY2iv9Ptpr6+iMJitoyGis12N5LJ8yjbnGR/sgZyKvro8+n2+mG1sXaGW4DyWyx7SmI12kgEKpURlVycAlP4sEU9PtTpOoXeoapdwR26WzXL/vCsxTaqbCwOwlRDCGKn73puGd3+19P12O3gsb0STTM01hJGsrJmNVLF2X5WCs4BycZIX7wxVTqVVbl1XVq9tvyS1+VzpilYtwIY7drbVJ/PS5TyktJI97MmQhJHzEjDLuJyBnJI5rLtbOLwx4bmKxNaG0h82a4uLkKtxPs+/uL4JLk5L4ycegqzqsmmPY32mCefTVkyklwfNtliOxm3xMQFYjbuO04wGLcZo1G/WKe5s2sJr3TY0BmMBaZ1cuCRgAtuXcrAA5A5GMCsIc792z1d2ttF/wAP+pehoXEU80kqWmosLh/Kdoyyt5CHIyq474brnkHHSsyG/a8XR3s1kmgJG+AzMZQjN+7lYjoMRyE7jg/MvJIFU9YS+l09dP0eGKe3RiwuXlmla3cNj73JdgwlBAJK/LkAVUv5pr7TvDt1NdO0MchmkdokjXOAsZ8yTIQhmUZBLHJwD82Lp0U4q73f6Pe3e2m1t79RNlqe2ebxHereW9vtkszudoZHlMQJLxIGDCRWJXKpnAOMZK0vhX7NZ6mLNvITUobQQ3QELJtjjbZFsL4bYeo6g5OGOKz5dIeXT2ezlW41CW4JKCQbLm3eQbS/JDJ3yfvYYYOcHeg0KGWZLm/lnnaUlXiaFeGZQTnZnawIHzZ4wozwM1OpTVNx591b7vLs/l08yU7vQv2dnFKz31lLcQC4lV386JxI21myp8z5lU54XAA5I+9WoXImWPy3KspYyDG1cY4POcnPHHY+2YWtAskklu/kyPy+1QQzfKNzdycKBnPSppYo54mimjWSNxhkdchh6EV5s58zu3/n/wAE1H0UUVkMKxrn/kddL/7B15/6Mtq2axrn/kddL/7B15/6MtqANmsbwx/yCZ/+wjff+lUtbNY3hj/kEz/9hG+/9KpaADwx/wAgmf8A7CN9/wClUtbNY3hj/kEz/wDYRvv/AEqlrZoAKKKKACobm7trOMSXVxFAhO0NK4UE+mT9KmooAxvCH/IlaD/2Drf/ANFrWzWN4Q/5ErQf+wdb/wDota2aACiiigAooooAKKhS2ijMZUNlAwXLk9SCe/PTvS3ETzR7Y5nhccqy464I5B6jnOPanZXATDW8DECWdtxYDI3ctnAzgYGfyFZ5heWZHVJvOhspExMvzkyFcDzB8uf3ZyAeMqT2rUZA8bI2SGGDg4/lVVIlSOK0W1uPJjkVVcyg8KNwYnduIyNvPJPbHNaQlbXqJnFWL6rNdWt3tRbe2tGaUJOLl4ZvujgM5Z9jSHaq84AzzinNBZ3kUkGtxw3VzcSvEzzSusEsRk5VXB25BC8duB1JNdEmm2twiajc6H5NzatI0dqDGd7A/Kwwdpbj5SSCNx6Vn6holvd6FJbRxXtxp8kcRggiKo0CLtOzbKygZAHDDjnNemsRGU19nXddNe9/119UZ8rMiJtIuNPVL6W3nhSSaSFzcrIsbNwXLRrgAsJQHP4jcSBzV99p/taO5S4ltp7LKWpkcHzIiMvMd2ChIZl2gc8DA25GrdXkl1reobbqOe6tbl0ikaRYFhVePL3DJYkyyLgkf6tgOQa43X7y+hitbaVyIWDbUEhkR0PQ8Dg5LYHt0458zMsXVovlptarZ36rWy/N6dfU2wdBYqqqS3K82qeZprwubqZkdLlQyB34bqxOQPl4GPUZqzYQ215dYtLexuGlbcwm2uCmSN20/wAWOmO2ORXOTSXEzqWMrKcpHliSR6D2rb0x7iScwtNtW3BWUvJ5cqLxhQTwCScDOOvavn1WrN/u9Hf0tdrT0vstrn0GPyfC4bD819d/6t/Xmdtot3q5u1WwtYzc+S0jz3I2rbyMTkspYje2MkIvO/OeuSTxDepNNpjrd71RZTPHOxt590hihjD9cMrB2KkH92ehDVVspNOs7RZZtOuLky3JaEmK4Z5X2hDtj8rH8DL2ICejAVnanPDZatJa6hostsxuGkhks5IhJEjqG3PEjs4HysSxx8oCt1GPtMv9pOnerDW3bV2eul23+He1z5LmaWjNu213S7zQbrVg0k9wI5I4LVnbO9N2JN6ZKJwRu3hQC2WwTVGS7vbzV5mt5Yp0uJpIp4irqzqM7jHuXbu2oqsdxBxgkZxVD+z5Y/FmnwC2t0+z3Col7bzhmRMnCgZ4JVJMg9unJUFNPsIrrUIHhhvbe4nJmRdRYwRuDktsdA65Bc5HBHpxWc8RUX7ylF63sn26dtFbV6eeiTc8937zsjXOpWkT+bK14Nku62WaSZfKQlUV1GN64VWUqQR8hY8MpNeexF/ew/bb2BtLs3WECRlURsSpEW5eCCYwSGxgsp4KsBknVLe+sXkne7NxcERPJJayKhU7vmUfxEriTbzxKeeuE/sJdRvbOLT2gtisclyyQkxhlEioC8ZUso+d0yc7cEtjGKzUsVCVp3i9OjfR7bLXut77WBtPRM6NLq6uNZtNYt5r6UfIbskvcBpV3hI1Ftu+VSzOVwM7QDjdmuz0j7fLcRuZILabz5GubESJuRNzlchSwDYZCcHknrXMeGrC8Mo1KWFZ7Ty/+Pu1macSBZPM37SRKWwm0YDbiF4IHPfaYJY2nil84kNnMqHceSAdwJU8AdOncAmtMRVtDk7K3p0t8vv22Oimn1LCROuoTzFIwjxRqGAG4kF8g8ZwMjHPc9O9iiivLbubBRRRSAKxrn/kddL/AOwdef8Aoy2rZrGuf+R10v8A7B15/wCjLagDZrG8Mf8AIJn/AOwjff8ApVLWzWN4Y/5BM/8A2Eb7/wBKpaADwx/yCZ/+wjff+lUtbNY3hj/kEz/9hG+/9Kpa2aACiiigAqG5tLa8jEd1bxToDuCyoGAPrg/WpqhubaO6jCSNKoBzmKZoz+akH8KAMzwh/wAiVoP/AGDrf/0WtbNY3hD/AJErQf8AsHW//ota2aACiiigAooooAKZGZCmZUVWyeFbcMZ45wO2P/r9aJnaKCSRInmZVLCNCAzkDoNxAyfcge9Ebs5cNE6bW2gsR84wORgnjtzg8dKdtAI5yVeFwJWw+NqMAOeMnJGQOvHPtUgEnnMSyeVtG0AfMDznJz06dvX8FeNJNu9FbaQw3DOCOh+tRzTGA+ZJ5a2yozSSM+CpGMcYxjG7JyMYHBzw1rogKt662sbCOe1gJWSdzcksAFH3sZHAJUnngfXIyrjRpLQm3sJott5CY5oHkEasVUDeihGGSAFPYDkDjFdE8io0akMTI20bUJAOCeSOg46njoOpFRx3UUs8kKCTfGcMTEwXt0YjB6joa1p1ZRV0vX9CWkeda7ZJZa4Bu1OSGNZZTbwxpKis7ZDt0cBmL4wP4XPI5rk70ndcC9cWrwCFYk8llMoZ9vmKzBQMbkByQQS2RkDd7Jd6PBfXMkt5ZWl2Ew8HnqDhtpG0/L0GSQeT87cDAzzl9o4h006faaPFcQ20m8KyxFnZ2LEwneMGM7iQyjdjA7mieEw2K5fabqy3S63/AFtquuu1yabqUZ+0pvU830XSobjU2ljBlMb7QElUkOXC/McngbgWIBIXJwOM9Ro3gv8AtK5imu7lFs0AhxaiQyuxQffBHyAfNhj1ypB6V0Vp4UtdLt50s4h5V4ouZUYtGqSLgpySWTDBCDtbaEOe1dBp+nW+n+XAWRRwbeLGGAUdzn5j8x9h2FZ08FhcNJzoybfRvf8A4Ftflrfa2+IxNbFNe2dzB0zw81vdy7kWzRZI7iFSz7j12xyEfKduGyA75JDcAgHTvLTxDIIbeK90+eNmT7SZomR0XuybSQeRwrDueccVpmBJbkJeSxTOQzxw7cAKGIzjJzwyg54yMgDNSG5XMkM4XzAQDHEWchGYqrHAyM4OewwecDNbuq29EmvT/PX+rGKgkrHOnQJbkJNd2gYSQmGS3by5Arl12y7SNrYAB5PRQACTio7bwzpz3iWtzEPKgcvFEU8uPeRlhCM5Cgknvy3B446b95FaSRqYYHRWEJZi6gAcMw4PpkZ/GiT7WA5Wa3Uc7N0Z4yBtz83POc9M8DjrTVeaXKnZeX9P0DkRyEWgxX6lLa1llsfMDGG4hkskDr5XIUjPO1mwqbSSeQc51o/CulRzNcwR28N08bQGZE3ZhbOFwxI64Oe5B9TWyUFxP8zSbYWwUKFQX+VgwPcDOOCRyQeRwSWFs8LRiFIwVVQUUAjaSVwe2CSR6E1UsXN6czX9dej+4OVFKwsLS2aEMrpOWaSKORxuGMgnCnB++ef9rmtBPL+0zbVcSYXeSrbT1xgng9+n41NTPKTzvNx8+3bnPauaU3NtyKtYfTJBIVHlFQ24Z3DPGee/XGafRWYwooooAKxrn/kddL/7B15/6Mtq2axrn/kddL/7B15/6MtqANmsbwx/yCZ/+wjff+lUtbNY3hj/AJBM/wD2Eb7/ANKpaADwx/yCZ/8AsI33/pVLWzWN4Y/5BM//AGEb7/0qlrZoAKKKzNd0+XUrKOOJIJgkgd7a4JEVwuCNjkA8cg9GGQODQBp1DcwyTxhY7mW3IOd8QUk+3zKR+lc7pegS22pwXKaNo2jpESZDp0hZpwVICN+7jG3J3c7uVHA61sX02sRzqNPsbGeHbktcXrwsGyeMCJ+MY5z+FAFbwh/yJWg/9g63/wDRa1s1w3hnVtdi0Tw7p0Wk6c/naUs0Uj6i65SNYl+YeScMfMXgEjrz69B9p8Tf9AjSP/BpJ/8AI9AGzRWN9p8Tf9AjSP8AwaSf/I9QrqXiNryW1Gj6VvjjSQn+1JMYYsB/y7/7B/SgDfoJAGTwBWN9p8Tf9AjSP/BpJ/8AI9Z9tJr0t/dSnR9LkuIWNu0j6nJ90hZAoAt8YAYDkZ4pq3UDqAQyggggjII701VYSuxkJVgMIQML/XmsGTUPENq9rD/Yukjzn8qMLqcmFwjN/wA+/TCn9KdNqXiOCW3jbR9KJnkMa41STghWbn/R/RTQBuRSrKhZQ4AZl+dCpyCQeD244Pccjg0ASecxLJ5W0bVC/MDzkk55HTjHGD1zxzrXOuo8Gmf2JpW1oWZB/akuAqFBjPkZ/iH5GhNb8QP5GNG0z99cSW651OThk35J/cdP3Z/Sh26AaE0lzbyo0ZQJEkibLqcgySMyiLld3yk5GSMjIwKkuWkR5RbSxKRLG0iRxrvwTg5LMBzxz1wDjJxWB/bHiAfYl/svT/Ourt7RZv7QO4mPzHIb/R8bSInHAzyOh5F918QPb+R/Y2kiPfvwNVl67t3/AD7+tbc8dBWL2q2VxdxSpAIyXRSpllYBHVsghQPQk5z2UYI6R6fpz2azNNDEzRuzQv5hkkk+8dzHYCCd7fKM4zwTmq6nxElw866RpYZ/vD+1pcE4Azj7P1woFQfa/El7eOv9kaPstHKOralLkuUUgqRD02uwII5J7Y5Xtfd5OgW6m3tNxDC72sJ89AtwHzwhUnHK5bk4wQvBJ9itvNBdTyyovzRnyt24EMMBsjBPHPfBrImv/ENhbR50bSvLDxwqF1SQ43MEHWDpkimT3Wv6baz3Z0bS/KghLeWmqSYVVB4UfZ8DioclZgdB5v8ApHkhGPybi4IwvPAIznnntjg81UklNpc2ayi8m3hovNjTcgYlcbwvTocNjaMHJGRnNlv/ABDb3MAbRdJ8y5fygy6nJ2Vn5P2fpgN+dRy634gigv5m0bTCtjnzANTkycIH4/cejDrjmhSSewzW1G3tp57UTWskzOxhDouQikb23/7DeWFPXOQO9WnVpJNjxRtBgHLHJ3A8fLjHvnP4Vz8+t+ILed4X0bTCyeTkjU5MfvXKL/yw9Rz7etJa6nr2rWjyLoul+Ws8kRD6pIDuilZCeIOm5CR7Yo59En0A6MOxmZDE4VVBEhI2sTngc5yMDqO4xnnFe9voLVEMl3BBumWPMvQk87eo5K5x+fNZ0kviOULv0bSDtYMP+JpLwR0/5d6qvNrX9oNA+gaM0t3CzSE6lIVdUIGG/wBH5/1n5fhRFxvdgdHDvMSmR0djzuRcAjt3Pb3qv9vAebzLeaKKFmDyyBVXAUNuHOSvOMgdQaz1n8SIoVdH0dVUYAGpyAAf+A9V7a81+/gtb9NF0kb4g8ZbVJMgMAcH9xSTV9UBt3N2Le0muEjacwruMcTKGPGcfMQBxzyRSx3lvLuAlQMiLI6lhlA2cZx9D+Vc+msa8NPh1BNE0pY7oxHjUnDEyFVUn9x7rn2FRz6hrFodTL6BpJ2Qi6ucak58wbWUdYOTiLHPtTTjazA6dpkV1T5izNt+VS2DgnnHQYHU+3qKZFdRyruAkQbVbMsbJ97oPmA59R1HeucudU12C8Kto2mrJG0LMY9UkAfzGaJc/uOQD1z7VLZ6pr+qWrypomlGNZ5YSsmpSfeikZCf9QeNyEj8OlL3QOlrDnkD+ONPUBgU0+8U5UgH57U8E9Rz1HuO1P8AtPib/oEaR/4NJP8A5HqlDLqcnjXT/wC0bS0t8add+X9numm3fvLbOd0aY7ev4d5A6asbwx/yCZ/+wjff+lUtbNY3hj/kEz/9hG+/9KpaADwx/wAgmf8A7CN9/wClUtbNY3hj/kEz/wDYRvv/AEqlrZoAKKKKACmNNEsyQtKglcFkQsNzAYyQO4GR+Yp9c5qllCvii2uLa3iS9nsrlWmVAHfHl7QT1OKTdlcaV3YuaUmhu0C6XPbTNpkBskENx5hhQ7co2Cef3a9efl+tSWWsrd37Wb2N3ayeX5sRuFUCVM4LABiR1HDBTyOOuMTw3c211dWf9mPE62ukpDOit/q5MjZG+M7WGHyDyM9K0dDtNXjvbi61mCy+0SqF863uWkwAeEVGjXavU9SSevbFWs/6/rz9Cb6f1/XkbtFFFIYUUUUAFFFFABTJporePzJpUjTIXc7ADJOAOe5JA/Gn1heK7O2uNMinmtoZJoLmBoZHQFoyZUBKk9PwoAu3E+lT6ta2k11bHULdjcQW5mAkBKMpbZnJG1mHTHPtTZ9YS21SCyls7oJO/lJc4XyzJtLbfvbjwDyFx79a5554Bq82niSMao+sxzrFkCRogi5cDrt2Blz06ita60q7ufEEF4sFlAsTgm9idhcSRgH9yy7cFST3YjvtzggWqT/rp/Xy+QPdr+uv9fP5m7RRRQAUUUUAFFFFAERuYFleJpoxJGgkdSwyqnOGI7Dg8+xqlp13o6aXNc6feW0likks0k0U4kQMzGSQlsnuxOO2a57W7C3hvPEP2azjVp9MSScQxANL88m4nA+YkZHrViGC28SXWqPYaky2LPbkT2bRuryICSPmVlIx5eeP4cdqOn9dwejt/WxvaVqcWr2Au4Y5o0Mjx7Zl2sCjFTkduQf/AK1XayfD2lXOkWM0F1eyXbvczTBnC8B3Zh91V5OcnjqTjjFa1NgFFFFIAooooAiNzAsrxNNGJI0EjqWGVU5wxHYcHn2NZ1rf6RbaJdX2mzw3NlEZriRraUSgsS0j4OcZJYnGe/YVha3YW8N54h+zWcatPpiSTiGIBpfnk3E4HzEjI9a0dMmt9VvNan0+S2u7KZI41YEPDJIEO4HHBGCgP0x2pa20HtK39bGrpl/JqNt58mn3NmDgqtw0ZLAjORsdhj64NTtaQPexXjJm4ijeJHyeFcqWGOnJRfy+tZPh3R5NKN47WllYx3DqyWdixaKPC4LZKry3fCjoOvJrcqmSgrG8Mf8AIJn/AOwjff8ApVLWzWN4Y/5BM/8A2Eb7/wBKpaQw8Mf8gmf/ALCN9/6VS1s1jeGP+QTP/wBhG+/9Kpa2aACiiigAooooAKKKKACiiigAooooAKKKKACiiigAorn9O/tLVk/tNNWkgjaZxHaCGNotiuV+bjeWIBOQ4wSOOOaUd1qcVpNrDarPLHHqEsLWbxReV5YnMYAIQOCBg5LHkcigOlzraK5bU9W1TSrnW5JLm3ligsUntYxBsEbFnHzncS3QZ6DjoKv+Hrpp4LhW1S5vmjcA/arT7PLGSoOCu1OD1B2/iaV9Lg9HY2qK86t9d1dvD638GparcTHTpZ7j7Vp6xQxMIiwaN/KUMd+0AZYEE9etasep3Edsfs2q6vcTzyRW6HUtOECRF2A3j9zHuIGeMntVNa2B6HYUVkKZ9F2te6lc38E0qRK00UQaJmO0ElAg2klR90nJ646VNVuprzTJb2x1K/sfKkeCJI0hxPJv2L99HOC3AxjjmkB0VFc7quuw2WlslvqcVxe2k1tHdLDtklAaVFbMagkEgtwBnniptL1r+09fvoYvtK20NrA6pcWrwMHZpQxw6qxBCr7cfWnbsHS5uUUUUgCiiigAooooAKKKKACiiigArG8Mf8gmf/sI33/pVLWzWN4Y/wCQTP8A9hG+/wDSqWgA8Mf8gmf/ALCN9/6VS1s1jHwvpvmSOj6jF5kjyssOpXMa7mYsxCrIAMkk8DvR/wAIxYf8/Grf+De6/wDjlAGzRWN/wjFh/wA/Grf+De6/+OUf8IxYf8/Grf8Ag3uv/jlAGzRWN/wjFh/z8at/4N7r/wCOUf8ACMWH/Pxq3/g3uv8A45QBs0Vjf8IxYf8APxq3/g3uv/jlH/CMWH/Pxq3/AIN7r/45QBs0Vjf8IxYf8/Grf+De6/8AjlH/AAjFh/z8at/4N7r/AOOUAbNFY3/CMWH/AD8at/4N7r/45R/wjFh/z8at/wCDe6/+OUAbNFY3/CMWH/Pxq3/g3uv/AI5R/wAIxYf8/Grf+De6/wDjlAGzRWN/wjFh/wA/Grf+De6/+OUf8IxYf8/Grf8Ag3uv/jlADhoIS6Z4dSv4LZ5TK9nE6CMsTk87d6gnkgMB145OYo/DMSzkyajezWn2lroWT+WIhIXL9QgcgMcgFiOB1p//AAjFh/z8at/4N7r/AOOUf8IxYf8APxq3/g3uv/jlGwFu50m2u57mWbzD9ptxbOobA2gscjHIPzHnPpSadpYsDPI93cXdxPjzJ7jZuIUYUYRVUAZPbuaq/wDCMWH/AD8at/4N7r/45R/wjFh/z8at/wCDe6/+OUeQFj+xrceHP7E3y/Zvsv2Xfkb9m3bnOMZx7VXGgvJBJBeaxqF5E6jasohQxsCCrqY41IYEDHP4Uf8ACMWH/Pxq3/g3uv8A45R/wjFh/wA/Grf+De6/+OUbgR3ei3p0q8gj1Ge+urhPLSS9kVFiH94LEgGR16ZOANwHS8mkwJBp8IeTy7EhkXPDkKVBb165+uDVX/hGLD/n41b/AMG91/8AHKP+EYsP+fjVv/Bvdf8AxygDQvrKPULdYJWdVWWOUFCM5Rw4/DKjNCWUaanNfhn82WFIWBI2gIWIx7/Of0rP/wCEYsP+fjVv/Bvdf/HKP+EYsP8An41b/wAG91/8coA2aKxv+EYsP+fjVv8Awb3X/wAco/4Riw/5+NW/8G91/wDHKANmisb/AIRiw/5+NW/8G91/8co/4Riw/wCfjVv/AAb3X/xygDZorG/4Riw/5+NW/wDBvdf/AByj/hGLD/n41b/wb3X/AMcoA2aKxv8AhGLD/n41b/wb3X/xyj/hGLD/AJ+NW/8ABvdf/HKANmisb/hGLD/n41b/AMG91/8AHKP+EYsP+fjVv/Bvdf8AxygDZrG8Mf8AIJn/AOwjff8ApVLR/wAIxYf8/Grf+De6/wDjlaFhYW+mWa2tqrrErM/zyM7FmYsxLMSSSSTknvQB/9k=");
            boolean ishandler = ossUtils.uploadPictures("0002Plot02.jpg", fileName);
            String imgUrl = ossUtils.getUrl("0002Plot02.jpg");
            System.out.println(imgUrl);
//            if(ishandler) {
//                FileInputStream inputStream = ossUtils.ioReadImageStreamFileId(null, "lis/20190-06-21/zidongshenhe.jpg", 1);
//                if(inputStream != null) {
//                    StringBuilder objectContent = new StringBuilder();
//                    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
//                    while (true) {
//                        String line = reader.readLine();
//                        if (line == null)
//                            break;
//                        objectContent.append(line);
//                    }
//                    inputStream.close();
//                    System.out.println(objectContent.toString());
//                }

//            BufferedReader reader = ossUtils.downloadFile("report_center/检验报告单.rpx");
//            BufferedWriter bWriter = new BufferedWriter(new FileWriter("D:\\home\\admin\\logs\\report_center\\检验报告单.rpx"));
//            String lineString;// 用于存储取到的数据
//            while ((lineString = reader.readLine()) != null) {
//                bWriter.write(lineString);
//                bWriter.newLine();
//
//            }
//            reader.close();
//            bWriter.close();
            System.out.println(ossUtils.downloadLocalFile("0002Plot02.jpg"));
//            String strPdfFile = ossUtils.downloadFileContent("report_center/检验报告单.rpx");
//            FileOutputStream out = new FileOutputStream("D:\\home\\admin\\logs\\report_center\\检验报告单.rpx");
//            out.write(strPdfFile.getBytes());
//            out.flush();
//            out.close();
//            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        
    }
    
}
